home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
conhlp03
/
fswchsrc
/
setkey.c
< prev
next >
Wrap
Text File
|
1994-11-16
|
2KB
|
89 lines
/*
setkeyword.c
KEYWORD 選択 メニュー
1994/02/28 1994/03/05
*/
#include "fswch.h"
#define LEFT (29)
#define RIGHT (28)
#define UP (30)
#define DOWN (31)
#define EXEC (18)
#define QUIT (17)
#define ESCKEY (0x1b)
#define NOM "0m"
#define REV "7m"
char us_sk[50]; /* 表示フォーマット */
const int firstline = 14; /* 表示開始行 */
const int w = 4; /* 横並びの数 */
void locdisp_sk(int x,char a){
const char *clr[]={ ESC_RED,ESC_WHITE,ESC_YELLOW,"" };
const char *d[]={ "なし", "設定", "否定", "" }; /* 選択値 */
if( a=='R' ) cputs(ESC REV);
else
if( a=='N' ) cputs(ESC NOM);
else return;
cprintf(us_sk,firstline+(x/w),(x%w)*(80/w),
keyword[x],clr[skey[x]],d[skey[x]]);
}
void setkeyword( void ){ /* 設定メニュー */
int m,i,b;
char endf=OFF; /* メニュー終了フラグ */
/* 出力書式の設定 */
/* %d;%df [ ESC_SKYBULE %-W.Ws/%s%-4.4s ESC_WHITE ] */
sprintf(us_sk,ESC "%%d;%%df[" ESC_SKYBULE
"%%-%d.%ds/%%s%%-%d.%ds" ESC_WHITE "]",
80/w-9,80/w-9,4,4);
/* firstline 以降の消去 */
cprintf(ESC"%d;0f"ESC"0J",firstline);
/* 設定項目の表示 */
for(m=0;keyword[m][0]!=NULL;m++)
locdisp_sk(m,'N'); /* m : 設定項目の数 */
i=b=0;
/* カーソル選択 */
while(endf==OFF){
locdisp_sk(b,'N');
locdisp_sk(i,'R');
b = i;
switch (getop()) {
case LEFT: /* カーソル ← */
i = (i+m-1) % m;
break;
case RIGHT: /* カーソル → */
i = (i+1) % m;
break;
case UP: /* カーソル ↑ */
i = (i+m-w) % m;
break;
case DOWN: /* カーソル ↓ */
i = (i+w) % m;
break;
case EXEC: /* 実行 key */
case 0x0d: /* RETkey */
/* ちょっと危険な設定 OFF SELLECT NONSELLCT */
/* トグル動作 */
skey[i] = (skey[i]+1) % 3;
break;
case QUIT: /* 取消 key */
case ESCKEY: /* ESC key */
endf=ON;
break;
default: ;
} /* switch */
} /* while(endf==OFF) */
locdisp_sk(i,'N');
/* キー選択カウント */
for(ckey=i=0;i<kno;i++)
if(skey[i]==SELLECT) ckey++;
}